﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraEditors.DXErrorProvider;
using System.Data.SqlClient;

namespace QuangNgai
{
    public partial class frmLoaiTaiLieu : DevExpress.XtraEditors.XtraForm
    {
        public frmLoaiTaiLieu()
        {
            InitializeComponent();
        }

        private void frmLoaiTaiLieu_Load(object sender, EventArgs e)
        {
            this.hsbooksTableAdapter.Fill(this.lTQNDataSet.Hsbooks);


        }

        private void gvLoaiTaiLieu_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            hsbooksBindingSource.EndEdit();
            hsbooksTableAdapter.Update(lTQNDataSet.Hsbooks);
        }


        private void gvLoaiTaiLieu_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                gvLoaiTaiLieu_RowUpdated(sender, null);
            }
        }


        private void gcTaiLieu_EmbeddedNavigator_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
        {
            if (e.Button.ButtonType == NavigatorButtonType.Remove)
            {
                e.Handled = true; // by-pass default handle
                if (MessageBox.Show("Bạn có muốn xóa loại tài liệu hiện tại?", "Xác nhận xóa",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
                  DialogResult.Yes)
                {
                    try
                    {
                        hsbooksBindingSource.RemoveCurrent();
                        hsbooksTableAdapter.Update(lTQNDataSet.Hsbooks);
                    }
                    catch (SqlException sqlE)
                    {
                        if (sqlE.Message.Contains("The DELETE statement conflicted with the REFERENCE constraint"))
                        {
                            MessageBox.Show("Loại tài liệu này đã được đưa vào sử dụng, không thể xóa", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            hsbooksTableAdapter.Fill(this.lTQNDataSet.Hsbooks);
                        }
                        else
                        {
                            throw;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw;
                    }
                }
            }
        }

        private void gvLoaiTaiLieu_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {
            if (gvLoaiTaiLieu.FocusedColumn.Name == "colBookname")
            {
                if (Convert.ToString(e.Value).Equals("") || Convert.ToString(e.Value) == null) e.Valid = false;
            }
        }

        private void gvLoaiTaiLieu_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
        {
            e.ExceptionMode = ExceptionMode.DisplayError;
            e.WindowCaption = "Lỗi nhập liệu";
            e.ErrorText = "Tên loại tài liệu không được trống";
        }

        private void gvLoaiTaiLieu_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            ColumnView view = sender as ColumnView;
            GridColumn column1 = view.Columns["Bookname"];

            object bookName = view.GetRowCellValue(e.RowHandle, column1);
            if (bookName == DBNull.Value)
            {
                e.Valid = false;
                view.SetColumnError(column1, "Tên loại tài liệu không được trống");
            }
            //DataRow r = (e.Row as DataRowView).Row;
            //LTQNDataSet.HsbooksRow row = r as LTQNDataSet.HsbooksRow;
            //try
            //{
            //    string temp = row.Bookname;
            //}
            //catch (StrongTypingException)
            //{
            //    e.Valid = false;
            //}
            //catch (Exception)
            //{ throw; }
        }

        private void gvLoaiTaiLieu_InvalidRowException(object sender, InvalidRowExceptionEventArgs e)
        {
            //e.ExceptionMode = ExceptionMode.DisplayError;
            //e.WindowCaption = "Lỗi nhập liệu";
            //e.ErrorText = "Tên loại tài liệu không được trống";
            e.ExceptionMode = ExceptionMode.NoAction;
        }
    }
}